package com.ucode.model.cgms;

import com.ucode.model.cgms.enums.CgmsCompanionOrderStatusEnum;
import com.ucode.tool.base.BaseTenantMode;
import io.swagger.v3.oas.annotations.media.Schema;
import lombok.Data;
import lombok.EqualsAndHashCode;
import lombok.ToString;

import java.math.BigDecimal;
import java.time.LocalDateTime;
import java.util.List;
import java.util.Set;

/**
 * 陪玩订单
 * @Author: liliang
 * @Date: 2025/4/27 12:48
 * @Version: 1.0
 */
@Schema(description = "陪玩俱乐部社区系统 - 陪玩服务商品")
@Data
@EqualsAndHashCode
@ToString(callSuper = true)
public class CgmsCompanionOrder extends BaseTenantMode<Long, Long> {
    /**
     * 下单用户
     */
    private Long memberId;
    /**
     * 商品专区ID
     */
    private Long zoneId;
    /**
     * 商品分类
     */
    private Long categoryId;
    /**
     * 商品ID
     */
    private Long productId;
    /**
     * 商品标题
     */
    private String title;
    /**
     * 商品子标题
     */
    private String subTitle;
    /**
     * 商品列表图
     */
    private String picUrl;
    /**
     * 市场价,单位:元
     */
    private BigDecimal marketPrice;
    /**
     * 现价,单位:元
     */
    private BigDecimal price;
    /**
     * 抽成比例时为百分比
     */
    private BigDecimal commissionRatio;

    /**
     * 返点比例时为百分比
     */
    private BigDecimal rebateRatio;

    /**
     * 数量
     */
    private Integer quantity;
    /**
     * 预约类型：1-尽快服务，2-指定时间
     */
    private Integer scheduledType;
    /**
     * 预约时间
     */
    private LocalDateTime scheduledTime;
    /**
     * 预约人
     */
    private String scheduledName;
    /**
     * 预约联系方式
     */
    private String scheduledContact;
    /**
     * 游戏类型：1：端游，2：手游
     */
    private Integer gameType;
    /**
     * 游戏昵称
     */
    private String gameNickname;
    /**
     * 游戏ID
     */
    private String gameId;
    /**
     * 订单备注
     */
    private String orderNote;

    /**
     * 下单IP
     */
    private String userIp;
    /**
     * 订单状态
     * 参考枚举 {@link CgmsCompanionOrderStatusEnum}
     */
    private Integer status;

    //==========订单支付信息============//
    /**
     * 支付到期时间
     */
    private LocalDateTime expireTime;
    /**
     * 支付订单编号
     */
    private Long payOrderId;
    /**
     * 支付方式
     */
    private String payType;
    /**
     * 支付时间
     */
    private LocalDateTime payTime;

    /**
     * 最终应付金额（总），单位：元
     */
    private BigDecimal payPrice;
    /**
     * 退款数量
     */
    private Integer refundQuantity;
    /**
     * 总退款金额
     */
    private BigDecimal refundAmount;
    /**
     * 是否售后中
     */
    private Boolean afterSaleState;

    /**
     * 订单抽成金额，单位：元 ，订单确认完成后计算
     * 订单抽成金额 = （最终应付金额 - 总退款金额） * 抽成比例时为百分比
     */
    private BigDecimal commissionAmount;
    /**
     * 订单最终金额，单位：元 ，订单确认完成后计算
     * 订单最终金额 = 最终应付金额 - 总退款金额 - 订单抽成金额
     */
    private BigDecimal finalAmount;

    //==========订单服务信息============//
    /**
     * 派单时间
     */
    private LocalDateTime dispatchedTime;
    /**
     * 确认时间
     */
    private LocalDateTime confirmedTime;
    /**
     * 服务开始时间
     */
    private LocalDateTime serviceStartTime;
    /**
     * 服务结束时间（完工时间）
     */
    private LocalDateTime serviceEndTime;
    /**
     * 服务人员
     */
    private Long serviceUserId;
    /**
     * 联合服务人员（跟CgmsJointServiceUser保持同步）
     */
    private Set<Long> jointServiceUserIds;
    /**
     * 服务取证图片
     */
    private List<String>  evidencePics;
    /**
     * 服务取证备注
     */
    private String evidenceRemark;
    /**
     * 服务报备审核状态
     * 参考枚举 {@link com.ucode.model.cgms.enums.CgmsCompanionReportAuditStateEnum}
     */
    private Integer reportAuditState;
    /**
     * 服务报备审核处理人
     */
    private Long processorId;
    /**
     * 服务报备审核处理人类型
     */
    private Integer processorType;

    /**
     * 服务报备审核处理时间
     */
    private LocalDateTime processTime;

    /**
     * 服务报备审核处理备注
     */
    private String processRemark;

}
